#!/bin/bash


# 变量说明：
#
# 变量用途分类：
#  I  安装配置(一次，在deploy服务器上)    /etc/profile.d/zzxia-op-super-invincible-lollipop.run-env.sh
#  R  运行(多次，在所有服务器上)          /etc/profile.d/zzxia-op-super-invincible-lollipop.run-env.sh
#  B  构建($ZZXIA_HOME/deploy下的命令)    ${ZZXIA_OP_SUPER_INVINCIBLE_LOLLIPOP_HOME}/env.sh
#  D  部署($ZZXIA_HOME/deploy下的命令)    ${ZZXIA_OP_SUPER_INVINCIBLE_LOLLIPOP_HOME}/env.sh
#
# 变量存放优先级：
#  1  包含【I、R】的一律优先放到【/etc/profile.d/zzxia-op-super-invincible-lollipop.run-env.sh】中
#  2  包含【B、D】的一律放到【${ZZXIA_OP_SUPER_INVINCIBLE_LOLLIPOP_HOME}/env.sh】中



# 0  基本

# BD -.
export ANSIBLE_HOST_FOR_LOGFILE='nginx_real'       #--- 构建发布日志存放服务器

# B -.
export BUILD_LOG_WEBSITE_DOMAIN_A="build-log"      #--- 这个需要与【nginx.list】中【项目名】为【build-log】的【域名A记录】保持一致，一般无需更改此项
export ERROR_EXIT='YES'                            #--- 出错立即退出，YES|NO

# B - 根据需要选择【npm|cnpm】，或者完整命令路径
export NPM_BIN='npm'

# D - DEBUG 模式
export ENABLE_DEBUG_PORT='YES'            #--- YES|NO，如果设置DEBUG='YES'，则将容器所有内部端口publish出来，一般用于【dev】环境
# BD - Debug模式容器随机端口范围
export DEBUG_RANDOM_PORT_MIN=45000        #--- 最小
export DEBUG_RANDOM_PORT_MAX=49999        #--- 最大



# 1  Build

## B - 仓库及分支
#-- 注：项目仓库URL组装地址：${GIT_REPO_URL_BASE}${GIT_DEFAULT_NAMESPACE}/项目.git
export GIT_REPO_URL_BASE='git@g.zjlh.lan:'
#export GIT_REPO_URL_BASE='ssh://git@g.zjlh.lan:2222/'
#export GIT_REPO_URL_BASE='https://g.zjlh.lan/'
export GIT_DEFAULT_NAMESPACE='gc'
export GIT_DEFAULT_BRANCH='develop'

## BD - Docker镜像前置名称，注：镜像完整名称：${DOCKER_REPO_SERVER}/${DOCKER_IMAGE_DEFAULT_PRE_NAME}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
export DOCKER_IMAGE_DEFAULT_PRE_NAME="xxx/${RUN_ENV}"      #-- 例如：【docker-repo:5000/{xxx/dev}/镜像名:latest】中间的部分

## B - 跳过测试
export BUILD_SKIP_TEST='NO'    #--- YES|NO



# 2  Docker集群相关

## D - 运行方式
# FUCK='YES'    : 直接执行命令
# FUCK='NO'     : 打印命令到屏幕，自行拷贝执行
export FUCK='NO'

##  集群类型

## ----------------------------------------
## A  swarm 

### BD - 远程管理
#export SWARM_DEFAULT_DOCKER_HOST="ssh://root@192.168.11.141:2222"
export SWARM_DEFAULT_DOCKER_HOST="tcp://192.168.11.71:2375"

### 基本运行参数
#### BD - 网络
export SWARM_DEFAULT_NETWORK='onet_1'         #--- 默认值，可以在服务清单中指定其他，需要先行创建

### BD - docker log driver
export DOCKER_LOG_DRIVER='json-file'
#export DOCKER_LOG_DRIVER='fluentd'

#### BD - Json file
export JSON_LOG_MAX_FILE_SIZES="100m"
export JSON_LOG_MAX_FILES=5

#### BD - Fluentd
#export FLUENTD_SERVER_ADDR="192.168.11.83"
#export FLUENTD_SERVER_PORT="24224"

## ----------------------------------------
## B  k8s

# D - 
export K8S_DEFAULT_CONTEXT='default'                     #--- 默认值，可以在服务清单中指定其他
export K8S_DEFAULT_NAMESAPCE='default'                   #--- 默认值，可以在服务清单中指定其他
export K8S_DOCKER_REPO_SECRET_NAME='my-docker-repo-pw'   #--- 请自行创建相关secret


## ----------------------------------------
## C  docker-compose

# D - 
export COMPOSE_DEFAULT_DOCKER_HOST=''                #-- 可在服务清单中指定
export COMPOSE_DEFAULT_NETWORK='net_gc'              #-- 可在服务清单中指定

## ----------------------------------------



# 3 Build 与 Docker

## BD - 密码相关 ( *** 存放在【${MY_PRIVATE_ENVS_DIR}】下的 *.sec 文件皆包含密码，不推荐保存到代码仓库 *** )
for FILE in $(find  "${MY_PRIVATE_ENVS_DIR}"  -type f  -name '*.sec')
do
    . ${FILE}
done

## D - Container env(自定义希望注入到docker容器的环境变量)
export CONTAINER_ENVS_PUB_FILE="${MY_PRIVATE_ENVS_DIR}/container-envs-pub.sec.only"




##############################################################
#
# 以下部分不需要修改
#
##############################################################

# BD - 构建发布历史数据存放目录
export LOLLIPOP_DB_HOME="${LOLLIPOP_VAR_BASE}/db"
[[ -d ${LOLLIPOP_DB_HOME} ]] || mkdir -p ${LOLLIPOP_DB_HOME}

# B - 项目构建克隆base路径
export LOLLIPOP_PROJECT_BASE="${LOLLIPOP_VAR_BASE}/build"
[[ -d ${LOLLIPOP_PROJECT_BASE} ]] || mkdir -p ${LOLLIPOP_PROJECT_BASE}

# BD - 项目构建发布日志base目录
export LOLLIPOP_LOG_BASE="${LOLLIPOP_VAR_BASE}/log"
[[ -d ${LOLLIPOP_LOG_BASE} ]] || mkdir -p ${LOLLIPOP_LOG_BASE}

# D - 生成yaml文件base目录
export LOLLIPOP_YAML_BASE="${LOLLIPOP_VAR_BASE}/yaml"
[[ -d ${LOLLIPOP_YAML_BASE} ]] || mkdir -p ${LOLLIPOP_YAML_BASE}

# 0 组装日志
# https://docs.docker.com/config/containers/logging/configure/
export DOCKER_LOG_PUB="--log-driver=json-file  --log-opt max-size=${JSON_LOG_MAX_FILE_SIZES:-100m}  --log-opt max-file=${JSON_LOG_MAX_FILES:-5}  --log-opt labels=\${SERVICE_NAME}"
#
case "${DOCKER_LOG_DRIVER}" in
    gelf)
        export DOCKER_LOG_PUB="--log-driver=gelf  --log-opt gelf-address=udp://${GELF_SERVER_ADDR}:${GELF_SERVER_PORT:-12201}  --log-opt tag=\${SERVICE_NAME}"
        ;;
    fluentd)
        export DOCKER_LOG_PUB="--log-driver=fluentd  --log-opt fluentd-address=udp://${FLUENTD_SERVER_ADDR}:${FLUENTD_SERVER_PORT:-24224}  --log-opt tag=\${SERVICE_NAME}"
        ;;
    json-file)
        export DOCKER_LOG_PUB="--log-driver=json-file  --log-opt max-size=${JSON_LOG_MAX_FILE_SIZES:-100m}  --log-opt max-file=${JSON_LOG_MAX_FILES:-5}  --log-opt labels=\${SERVICE_NAME}"
        ;;
    *)
        export DOCKER_LOG_PUB="--log-driver=json-file  --log-opt max-size=${JSON_LOG_MAX_FILE_SIZES:-100m}  --log-opt max-file=${JSON_LOG_MAX_FILES:-5}  --log-opt labels=\${SERVICE_NAME}"
        ;;
esac



